
        <html>
			<head>
			     <title>深入剖析某国外组织针对中国企业的APT攻击(CVE-2015-8651) - 小白帽</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/papers/12184">http://drops.wooyun.org/papers/12184</a></h1>
				
      <p>
        <p>2015年12月31日，微步在线对一起利用Flash零日漏洞的APT攻击做了分析和预警，并通过溯源分析确定了其幕后的黑客组织为“DarkHotel”。此后，通过我们的持续监控跟踪，发现DarkHotel的定向鱼叉式攻击依然在继续，主要目标为我国境内企业及其管理层人员，且有多起成功攻击案例。因此微步在线决定进一步披露攻击中所利用的手段和技术，并全面公开相应的威胁情报IOC(攻陷指标)，与业界共同携手抵御来自境外势力的APT攻击。</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803411375151158.png" alt="" /></p>

<!--more-->

<h1>0x00 攻击概况</h1>

<hr />

<p>微步在线的监测数据和分析显示，此次DarkHotel发起的定向攻击从2015年11月起一直持续到现在，被攻击的国家地区包括：</p>

<ul>
<li>中国</li>
<li>俄罗斯</li>
<li>朝鲜</li>
</ul>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803411592737227.png" alt="" /></p>

<p>同时，我们注意到这个境外组织对中国存在异乎寻常的兴趣和关注，可以认为中国是它主要的攻击目标之一，除本次行动外：</p>

<ul>
<li>2014年卡巴斯基发现该组织利用Flash 0day（CVE-2014-0497）对中国境内的3个163.com邮箱用户进行定向攻击；</li>
<li>在之前的攻击中，该组织使用了163pics.net、163services.com作为C2C域名，此次又使用manage-163-account.com的C2C域名，这说明攻击者对中国有一定了解并且尝试在特殊环境下进行结合社会工程学进行鱼叉式攻击。</li>
</ul>

<h1>0x01攻击渠道</h1>

<hr />

<p>此次攻击的渠道是通过鱼叉式钓鱼邮件定向发给被攻击对象。整体流程如下图：</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803411678061320.png" alt="" /></p>

<p>邮件附件的word 文档中内嵌恶意的SWF 链接，该SWF exploit文件的metadata如下。根据其metadata推测，此攻击文件生成于2015年11月25日：</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803411860750423.png" alt="" /></p>

<p>点击恶意的SWF链接将触发整数溢出漏洞，该漏洞正是12月28日被Adobe修复的CVE-2015-8651，利用成功后跳转到下面这段shellcode：</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803412441755519.png" alt="" /></p>

<p>shellcode 被执行后将下载的恶意木马updata.exe保存在被感染系统的%temp%路径下， RC4解密后，再利用Windows自带的echo命令添加可执行文件的“MZ”头来构建有效的PE文件, 然后updata.exe通过调用mshta.exe 进一步下载并执行恶意代码，盗取系统的信息。</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803412897964616.png" alt="" /></p>

<p>截止到1月13日，部分样本已经可以被少部分安全厂商查杀</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803413090422714.png" alt="" /></p>

<h1>0x02 updata.exe简析</h1>

<hr />

<p>updata.exe是一个PE文件，编译时间为 2014年4月24日 04:38:20，具有完整的文件属性，看上去是生成SSH密钥的一个工具：</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803413298557814.png" alt="" /></p>

<p>通过逆向分析其汇编码，可以看到有许多编译留下的源文件路径：</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803413499381913.png" alt="" /></p>

<p>我们初步判断，这是一个被恶意篡改的开源工具，篡改后程序仅提供一个参数：-genkeypair。无论是否传递此参数，updata.exe都会释放一个公钥在当前目录用于干扰判断。释放公钥后便进入了真正的恶意代码。此样本未进行代码混淆，但采用了多种反调试/反虚拟机技术及字段加密，动态解密部分我们后面的“在反逆向跟踪分析”一节详细描述。</p>

<h1>0x03 C2C</h1>

<hr />

<p>updata.exe 是一个Trojan Downloader，利用执行mshta.exe 从以下C2C下载文件。遗憾的是我们没有获取到更多的payload数据。</p>

<p><img src="http://static.wooyun.org//drops/20160118/20160118034138163881015.png" alt="" /></p>

<p>通过VirusBook的威胁分析平台，我们可以看到攻击者使用的Manage-163-account.com域名注册于2015年9月30日， IP解析为82.221.129.16. 服务器位于冰岛。</p>

<p>域名威胁情报分析：</p>

<p><img src="http://static.wooyun.org//drops/20160118/20160118034140549831117.png" alt="" /></p>

<p>域名IP变化：</p>

<p><img src="http://static.wooyun.org//drops/20160118/20160118034141483191212.png" alt="" /></p>

<p>Whois信息变化：</p>

<p><img src="http://static.wooyun.org//drops/20160118/20160118034144440921312.png" alt="" /></p>

<p>可视化分析：</p>

<p><img src="http://static.wooyun.org//drops/20160118/20160118034146462211410.png" alt="" /></p>

<h1>0x04 反逆向跟踪分析</h1>

<hr />

<p>updata.exe并没有进行代码混淆和加壳。木马对其所有的字段都进行了加密处理。目的是为了反检测，增加逆向分析的难度。同时它还采用了动态解密，对解密内存重置，目的也是为了起到反内存跟踪分析，增加逆向分析难度。</p>

<p>让我们来看一个具体实例：</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803414834822159.png" alt="" /></p>

<p>m_CreateFileA的所有参数均为Decryption函数动态解密生成，而API函数CreateFileA的调用也是通过在一个加密函数表中查找并解密后调用。</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803414922646166.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803415016729175.png" alt="" /></p>

<p>gEncWinDlls与gEncApis两张表中的加密字符串被传递给Decryption函数进行解密，最后动态解密的字符串会通过DynMem_Erase函数重置，这样做起到了反内存dump截取的分析。</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803415296044185.png" alt="" /></p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803415479403194.png" alt="" /></p>

<p>DynMem_Erase 用来重置解密后的内存</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803415657344204.png" alt="" /></p>

<h1>0x05 反沙箱及反检测技术</h1>

<hr />

<p>updata.exe也用到了很多反沙箱技术，通过检测各种系统环境来判断是否有沙箱存在，比如： 查找是否运行模块存在如下路径：</p>

<p><img src="http://static.wooyun.org//drops/20160118/20160118034157176162111.png" alt="" /></p>

<p>查找是否运行进程包括如下关键字：</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803415934263228.png" alt="" /></p>

<p>查找是否当前进程导出表中所有模块存在以下函数：</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803420276669234.png" alt="" /></p>

<p>查找是否当前系统用户名包含以下关键字：</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803420350118244.png" alt="" /></p>

<p>查找是否系统中有如下进程关键字：</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803420573563253.png" alt="" /></p>

<h1>0x06 攻击组织的“黑客画像”</h1>

<hr />

<p>随着对此攻击事件的目标、工具、手法和过程更详细的分析，我们发现其特点和Darkhotel团伙惊人的一致。<br />
Darkhotel APT攻击团伙的踪迹最早可以追溯到2007年，其从2010年开始更多的利用企业高管在商业旅行中访问酒店网络的时机，进行APT攻击来窃取信息。因此在2014年卡巴斯基发布针对此团队的研究报告时，将其命名为“Darkhotel”。此团伙攻击目标集中在亚太地区开展业务和投资的企业高管（如：CEO、SVP、高管及高级研发人员），攻击的行业包括大型电子制造和通信、投资、国防工业、汽车等。但从2014年开始，该组织更多的利用鱼叉式攻击。</p>

<p>此团队拥有充沛的资源，多次使用零日漏洞（特别是Flash类型）来进行攻击，并规避最新的防御措施，同时也会盗窃合法的数字证书为后门软件及监听工具进行签名。如果有一个目标已经被有效感染，往往就会从作案点删除他们的工具，进而隐藏自己的活动踪迹。从其行动特点看，具有极高的技术能力及充沛的资源。<br />
我们对此次事件和暗黑客栈（Darkhotel）的特点进行了对比，认为有充足理由认定其就是始作俑者。</p>

<p><img src="http://static.wooyun.org//drops/20160118/2016011803420686120262.png" alt="" /></p>

<h1>0x07 小结</h1>

<hr />

<p>综合微步在线掌握的情报线索及合作伙伴数据，我们可以肯定Darkhotel这个存在了至少9年的网络犯罪组织，具备丰富的技术、资金及人力资源（2010-2014年之间善于利用酒店网络进行攻击，但从2014年开始，更多的使用Flash 0day进行鱼叉式攻击），目标集中针对亚洲特别是中国的企业，手法灵活多变且注重反检测对抗，可以发起多种传统检测技术难以检测的攻击。因此需要国内企业及安全同行引起足够的重视。我们建议大家使用附录中功能提供的IOC数据，对其活动进行检测及历史追溯，以尽早消除风险、保护企业的关键业务和信息。</p>

<h1>0x08 致谢</h1>

<hr />

<p>感谢VirusBook合作伙伴安天、百度杀毒、腾讯电脑管家、360杀毒、瑞星、金山、云堤、微软、趋势、卡巴斯基、小红伞、AVG、Dr.Web、火绒、IKARUS、Sophos、ClamAV、Avast!、Panda、Gdata、ESET等</p>

<h1>附录：IOC</h1>

<h2>一、 利用CVE-2015-8651漏洞的SWF文件 (MD5)：</h2>

<ul>
<li>f74b90e77f38a06ff3f48d6de182a45a</li>
<li>06d9330a56373d4bc4f57e28b8827ed5</li>
</ul>

<h2>二、 SWF下载的木马文件(MD5)：</h2>

<ul>
<li>5f4c355c95927c5712e9deacd31a2fa8</li>
<li>abda7ced5fddf2339d076d62a6b91d4e</li>
<li>d8a06811385e0fd463f215a43b366169</li>
<li>3acdef50a42d038de579f5ced74eb97f</li>
<li>a5ec201b518ce52c50cd8175ad79d5ea</li>
<li>eac466fb9be8f98c29bfe513949f2ab5</li>
<li>d0399ca4c86909bc03ccf470534264c5</li>
</ul>

<h2>三、 C2C 域名:</h2>

<ul>
<li>manage-163-account.com</li>
</ul>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          